package org.dromara.system.domain.vo;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.system.domain.TalentDeclarationInfo;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 人才申报信息视图对象 talent_declaration_info
 *
 * @author 毛宁川
 * @date 2025-09-05
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = TalentDeclarationInfo.class)
public class TalentDeclarationInfoVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 申报ID
     */
    @ExcelProperty(value = "申报ID")
    private Long infoId;

    /**
     * 小程序用户ID
     */
    @ExcelProperty(value = "小程序用户ID")
    private Long xcxUserId;

    /**
     * 姓名
     */
    @ExcelProperty(value = "姓名")
    private String userName;

    /**
     * 证件类型
     */
    @ExcelProperty(value = "证件类型")
    private String idcardType;

    /**
     * 证件号
     */
    @ExcelProperty(value = "证件号")
    private String idcardNum;

    /**
     * 性别
     */
    @ExcelProperty(value = "性别", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_user_sex")
    private String sex;

    /**
     * 出生年月
     */
    @ExcelProperty(value = "出生年月")
    private Date birthday;

    /**
     * 手机号码
     */
    @ExcelProperty(value = "手机号码")
    private String phonenumber;

    /**
     * 工作单位
     */
    @ExcelProperty(value = "工作单位")
    private String workCompanyName;

    /**
     * 单位性质
     */
    @ExcelProperty(value = "单位性质", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "work_company_type")
    private String workCompanyType;

    /**
     * 所属区县
     */
    @ExcelProperty(value = "所属区县")
    private String quxian;

    /**
     * 所属乡镇
     */
    @ExcelProperty(value = "所属乡镇", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "xiangzhen_list")
    private String xiangzhen;

    /**
     * 毕业院校
     */
    @ExcelProperty(value = "毕业院校")
    private String graduateFrom;

    /**
     * 专业名称
     */
    @ExcelProperty(value = "专业名称")
    private String major;

    /**
     * 毕业时间
     */
    @ExcelProperty(value = "毕业时间")
    private Date graduateDate;

    /**
     * 学习形式
     */
    @ExcelProperty(value = "学习形式", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "learning_forms")
    private String learningForms;

    /**
     * 学历
     */
    @ExcelProperty(value = "学历", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "degree")
    private String degree;


    private String degreeProveUrl;

    /**
     * 新奉节人才等级
     */
    @ExcelProperty(value = "新奉节人才等级", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "new_fengjie_talent_level")
    private String newFengjieTalentLevel;

    /**
     * 符合新重庆人才标准
     */
    @ExcelProperty(value = "符合新重庆人才标准")
    private String meetChongqingTalentDesc;

    /**
     * 符合新奉节人才标准
     */
    @ExcelProperty(value = "符合新奉节人才标准")
    private String meetFengjieTalentDesc;

    /**
     * 人才证明资料
     */
    @ExcelProperty(value = "人才证明资料")
    private String provePapers;

    /**
     * 证书（称号）名称
     */
    @ExcelProperty(value = "证书", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "称=号")
    private String talentPaperName;

    private String talentPaperNameProveUrl;

    /**
     * 证书（称号）获取时间
     */
    @ExcelProperty(value = "证书", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "称=号")
    private Date talentPaperDate;

    /**
     * 专业技术职称
     */
    @ExcelProperty(value = "专业技术职称", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "professional_skill_level")
    private String professionalSkillLevel;

    private String professionalSkillProveUrl;

    /**
     * 职业技能等级
     */
    @ExcelProperty(value = "职业技能等级", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "skill_talent_type")
    private String skillTalentType;

    private String skillTalentProveUrl;

    /**
     * 行业类别
     */
    @ExcelProperty(value = "行业类别", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "hangye_type")
    private String hangyeType;

    /**
     * 产业链类别
     */
    @ExcelProperty(value = "产业链类别", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "industry_category")
    private String industryCategory;

    /**
     * 岗位类别
     */
    @ExcelProperty(value = "岗位类别")
    private String jobCategory;

    /**
     * 单位联络员
     */
    @ExcelProperty(value = "单位联络员")
    private String workLiaisonName;

    /**
     * 单位联络员电话
     */
    @ExcelProperty(value = "单位联络员电话")
    private String workLiaisonPhone;

    /**
     * 服务专员
     */
    @ExcelProperty(value = "服务专员")
    private String serviceLiaisonName;

    /**
     * 服务专员电话
     */
    @ExcelProperty(value = "服务专员电话")
    private String serviceLiaisonPhone;

    /**
     * 行业主管部门
     */
    @ExcelProperty(value = "行业主管部门")
    private String manageWorkName;

    /**
     * 行业主管部门ID
     */
    @ExcelProperty(value = "行业主管部门ID")
    private Long manageWorkId;

    /**
     * 填报人单位
     */
    @ExcelProperty(value = "填报人单位")
    private String submitWorkName;

    /**
     * 填报人单位ID
     */
    @ExcelProperty(value = "填报人单位ID")
    private Long submitWorkId;


    private Long suggestManageWorkId;


    /**
     * 填报人单位ID
     */
    private String submitPersonName;

    /**
     * 填报人单位ID
     */
    private  String submitPersonPhone;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 认定标准
     */
    @ExcelProperty(value = "认定标准")
    private String accreditationCriteria;

    /**
     * 到期日期
     */
    @ExcelProperty(value = "到期日期")
    private Date expireDate;

    /**
     * 申报状态（0代表未申报 1代表已申报 3代表被驳回 4代表已通过）
     */
    @ExcelProperty(value = "申报状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "declaration_flag")
    private String declarationFlag;


    private String allotFlag;


    private Long meetConfigId;

    /**
     * 申报备注
     */
    @ExcelProperty(value = "申报备注")
    private String declarationRemark;


    private Date createTime;


}
